#ifndef _TETRAEDRE_H
#define _TETRAEDRE_H

#include "FormeComposee.hpp"

#include "Plan.hpp"

#include <vector>

/**
 * Classe implémentant le trétraèdre pour le raytracing. Le Tetraedre
 * est formé de 4 instances de Plan, et est définit en coordonéées
 * globales.
 *
 * Forme::baryCentre est le centre de gravité du Tetraedre.
 *
 * @author Jean-Marc Comby
 * @author Romain Dequesne
 * @author Johan "Solo" Luisier
 *
 * @date 12 Juin 2004
 */
class Tetraedre: public FormeComposee
{
 public:
  Tetraedre(const Coord& base1, const Coord& base2, const Coord& base3,
	    const Coord& hauteur); // 3 coord de la base du tetraedre avec la hauteur
  ~Tetraedre();
	
 private:
  /**
   * Liste des 4 instances de Plan.
   */
  std::vector< Plan::SharedPtr > listplan;
  /**
   * Liste des instances de FormeComposee intermédiaires.
   */
  std::vector< FormeComposee::SharedPtr > listFC;
};

#endif
